package com.ibm.cloud.banking.account.entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * account information entity
 * @author 
 */

public class AccountInfo implements Serializable {

    public static final String ACCOUNT_OPERATION_OPEN = "1";
    public static final String ACCOUNT_OPERATION_CLOSE = "2";

    public static final String REVERSE_FLAG_NORMAL = "0";

    public static final String DC_FLAG_D = "D";
	public static final String DC_FLAG_C = "C";


    public static final String ACCOUNT_STATUS_NORMAL = "1";
	public static final String ACCOUNT_DEFAULT_STATUS = "1";

	//0-正常,1-只收不付(NOT_ALLOW_PAYMENT),2-只付不收(NOT_ALLOW_DEPOSIT),3-封存
    public static final String ACCOUNT_CONTROL_STATUS_NORMAL = "0";
    public static final String ACCOUNT_CONTROL_STATUS_DEPOSIT_NOT_ALLOW_WITHDRAWAL = "1";
    public static final String ACCOUNT_CONTROL_STATUS_PAYMENT_NOT_ALLOW_DEPOSIT = "2";
    public static final String ACCOUNT_CONTROL_STATUS_SEALED = "3";

    public static final String DEFAULT_CURRENCY_RMB = "156";
	public static final String DEFAULT_SETTLEMENT_TYPE = "1";

	public static final String INTEREST_FLAG_Y = "Y";


    private Long id;

    /**
     * 账号
     */
    private String accountNo;

    /**
     * 户名
     */
    private String name;

    /**
     * 币种:156-人民币 084-美元
     */
    private String currency;

    /**
     * 余额
     */
    private BigDecimal balance;

    /**
     * 可用余额
     */
    private BigDecimal availableBalance;

    /**
     * 冻结金额
     */
    private BigDecimal freezeBalance;

    /**
     * 透支金额
     */
    private BigDecimal overdraftBalance;

    /**
     * 客户编码
     */
    private String customerNo;

    private String productNo;

    /**
     * 账户类型:1-结算账户  2-存款账户
     */
    private String type;

    /**
     * 账户级别:1-I类户 2-II类户 3-III类户
     */
    private String accountCategory;

    /**
     * 账户状态:1-正常  2-已销户 3-转移
     */
    private String status;

    /**
     * 开户机构号
     */
    private String initialBranch;

    /**
     * 开户金额
     */
    private BigDecimal initialAmount;

    /**
     * 开户日期
     */
    private Date initialDate;

    /**
     * 明细笔数
     */
    private Integer detailCount;

    /**
     * 销户机构号
     */
    private String closingBranch;

    /**
     * 销户日期
     */
    private Date closingDate;

    /**
     * 开户柜员号
     */
    private String initialTellerId;

    /**
     * 开户柜员号
     */
    private String closingTellerId;

    /**
     * 计息标志:Y-计息  N-不计息
     */
    private String interestFlag;

    /**
     * 积数
     */
    private BigDecimal productNumber;

    /**
     * 计息金额
     */
    private BigDecimal interestAmount;

    /**
     * 交易密码
     */
    private String transPassword;

    /**
     * 密码出错次数
     */
    private Integer errorTimes;

    /**
     * 查询密码
     */
    private Integer queryPassword;

    /**
     * 帐户控制状态:0-正常,1-只收不付,2-只付不收,3-封存
     */
    private String controlStatus;

    /**
     * 创建时间
     */
    private Date createDt;

    /**
     * 修改时间
     */
    private Date updateDt;

    private Integer shardingId;

    /**
     * 交易金额
     */
    private BigDecimal transAmount;
    
    /**
     * 通存标志
     */
    private String dpFlag;
    
    /**
     * 通兑标志
     */
    private String dwFlag;
    
    /**
     * 支取方式
     */
    private String drwType;

	private BigDecimal dayWithdrawLimit;

	public BigDecimal getDayWithdrawLimit() {
		return dayWithdrawLimit;
	}

	public void setDayWithdrawLimit(BigDecimal dayWithdrawLimit) {
		this.dayWithdrawLimit = dayWithdrawLimit;
	}

	public Long getId() {
		return id;
	}


	public void setId(Long id) {
		this.id = id;
	}


	public String getAccountNo() {
		return accountNo;
	}


	public void setAccountNo(String accountNo) {
		this.accountNo = accountNo;
	}


	public String getName() {
		return name;
	}


	public void setName(String name) {
		this.name = name;
	}


	public String getCurrency() {
		return currency;
	}


	public void setCurrency(String currency) {
		this.currency = currency;
	}


	public BigDecimal getBalance() {
		return balance;
	}


	public void setBalance(BigDecimal balance) {
		this.balance = balance;
	}


	public BigDecimal getAvailableBalance() {
		return availableBalance;
	}


	public void setAvailableBalance(BigDecimal availableBalance) {
		this.availableBalance = availableBalance;
	}


	public BigDecimal getFreezeBalance() {
		return freezeBalance;
	}


	public void setFreezeBalance(BigDecimal freezeBalance) {
		this.freezeBalance = freezeBalance;
	}


	public BigDecimal getOverdraftBalance() {
		return overdraftBalance;
	}


	public void setOverdraftBalance(BigDecimal overdraftBalance) {
		this.overdraftBalance = overdraftBalance;
	}


	public String getCustomerNo() {
		return customerNo;
	}


	public void setCustomerNo(String customerNo) {
		this.customerNo = customerNo;
	}


	public String getProductNo() {
		return productNo;
	}


	public void setProductNo(String productNo) {
		this.productNo = productNo;
	}


	public String getType() {
		return type;
	}


	public void setType(String type) {
		this.type = type;
	}


	public String getAccountCategory() {
		return accountCategory;
	}


	public void setAccountCategory(String accountCategory) {
		this.accountCategory = accountCategory;
	}


	public String getStatus() {
		return status;
	}


	public void setStatus(String status) {
		this.status = status;
	}


	public String getInitialBranch() {
		return initialBranch;
	}


	public void setInitialBranch(String initialBranch) {
		this.initialBranch = initialBranch;
	}


	public BigDecimal getInitialAmount() {
		return initialAmount;
	}


	public void setInitialAmount(BigDecimal initialAmount) {
		this.initialAmount = initialAmount;
	}


	public Date getInitialDate() {
		return initialDate;
	}


	public void setInitialDate(Date initialDate) {
		this.initialDate = initialDate;
	}


	public Integer getDetailCount() {
		return detailCount;
	}


	public void setDetailCount(Integer detailCount) {
		this.detailCount = detailCount;
	}


	public String getClosingBranch() {
		return closingBranch;
	}


	public void setClosingBranch(String closingBranch) {
		this.closingBranch = closingBranch;
	}


	public Date getClosingDate() {
		return closingDate;
	}


	public void setClosingDate(Date closingDate) {
		this.closingDate = closingDate;
	}


	public String getInitialTellerId() {
		return initialTellerId;
	}


	public void setInitialTellerId(String initialTellerId) {
		this.initialTellerId = initialTellerId;
	}


	public String getClosingTellerId() {
		return closingTellerId;
	}


	public void setClosingTellerId(String closingTellerId) {
		this.closingTellerId = closingTellerId;
	}


	public String getInterestFlag() {
		return interestFlag;
	}


	public void setInterestFlag(String interestFlag) {
		this.interestFlag = interestFlag;
	}


	public BigDecimal getProductNumber() {
		return productNumber;
	}


	public void setProductNumber(BigDecimal productNumber) {
		this.productNumber = productNumber;
	}


	public BigDecimal getInterestAmount() {
		return interestAmount;
	}


	public void setInterestAmount(BigDecimal interestAmount) {
		this.interestAmount = interestAmount;
	}


	public String getTransPassword() {
		return transPassword;
	}


	public void setTransPassword(String transPassword) {
		this.transPassword = transPassword;
	}


	public Integer getErrorTimes() {
		return errorTimes;
	}


	public void setErrorTimes(Integer errorTimes) {
		this.errorTimes = errorTimes;
	}


	public Integer getQueryPassword() {
		return queryPassword;
	}


	public void setQueryPassword(Integer queryPassword) {
		this.queryPassword = queryPassword;
	}


	public String getControlStatus() {
		return controlStatus;
	}


	public void setControlStatus(String controlStatus) {
		this.controlStatus = controlStatus;
	}


	public Date getCreateDt() {
		return createDt;
	}


	public void setCreateDt(Date createDt) {
		this.createDt = createDt;
	}


	public Date getUpdateDt() {
		return updateDt;
	}


	public void setUpdateDt(Date updateDt) {
		this.updateDt = updateDt;
	}


	public Integer getShardingId() {
		return shardingId;
	}


	public void setShardingId(Integer shardingId) {
		this.shardingId = shardingId;
	}


	public BigDecimal getTransAmount() {
		return transAmount;
	}


	public void setTransAmount(BigDecimal transAmount) {
		this.transAmount = transAmount;
	}


	public String getDpFlag() {
		return dpFlag;
	}


	public void setDpFlag(String dpFlag) {
		this.dpFlag = dpFlag;
	}


	public String getDwFlag() {
		return dwFlag;
	}


	public void setDwFlag(String dwFlag) {
		this.dwFlag = dwFlag;
	}


	public String getDrwType() {
		return drwType;
	}


	public void setDrwType(String drwType) {
		this.drwType = drwType;
	}


	private static final long serialVersionUID = 1L;
}